# -*- coding: utf-8 -*-
# @Time : 2021-11-17 16:01
# @Author : lwb
# @Site : 
# @File : MLP[rpcess.py
import torch
import torch.nn as nn
from torch.nn import functional as F


# 这个函数也可不用，只需要将他的操作，在dataset中return 数据的时候应该就行了
# collate_fn参数指向一个函数，用于对一个批次的样本进行整理，如将其转换成张量
def collate_fn(examples):
    inputs = [torch.tensor(ex[0]) for ex in examples]
    # 输出的目标targets为该批次中全部样例输出结果（0或者1）构成的张量
    targets = torch.tensor([ex[1] for ex in examples], dtype=torch.long)
    # 获取一个批次中每个样例的序列长度
    offsets = [0] + [i.shape[0] for i in inputs]
    # 根据序列的长度，转换为每个序列起始位置的偏移量（offsets）
    offsets = torch.tensor(offsets[:-1]).cumsum(dim=0)
    # 将inputs 列表中的张量拼接成一个大的张量
    inputs = torch.cat(inputs)
    return inputs, offsets, targets